package com.sk.bilibili.controller;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.sk.bilibili.bean.Live;
import com.sk.bilibili.dto.LiveInfo;
import com.sk.bilibili.dto.PushInfo;
import com.sk.bilibili.other.R;
import com.sk.bilibili.service.LiveService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
* @author 邵康
* @date 2021/11/26 09:55
*/
@CrossOrigin
@RestController
@RequestMapping("/live")
@Api(tags = "直播相关")
public class LiveController {

    @Autowired
    private LiveService liveService;

    @ApiOperation("添加直播信息：标题，cover,bg  没有请使用占位图 必须其他随意")
    @PostMapping("/add")
    public R<Void> add(Live live){
        return liveService.add(live);
    }

    @ApiOperation("deleteRes")
    @GetMapping("/delete")
    public R<Void> delete(Integer id){
        return liveService.delete(id);
    }

    @ApiOperation("update")
    @PostMapping("/update")
    public R<Void> update( Live live){
        return liveService.update(live);
    }

    @ApiOperation("按名字搜索直播  关键字必不可少")
    @PostMapping("/pageSearch")
    public R<IPage<Live>> pageSearch(@RequestBody LiveInfo liveInfo){
        return liveService.pageSearch(liveInfo);
    }

    @ApiOperation("获取首页推荐直播内容")
    @GetMapping("/getHeaderLive")
    public R<List<Live>> getHeaderLive(){
        return liveService.getHeaderLive();
    }

    @ApiOperation("获取推荐视频")
    @GetMapping("/getRecommend")
    public R<List<Live>> getRecommend(@RequestParam(defaultValue = "1") Integer page,
                                      @RequestParam(defaultValue = "20") Integer size){
        return liveService.getRecommend(page,size);
    }

    @ApiOperation("获取指定直播类型  注意不能指定分页大小  liveTypeId  必须指定  B站没有对应的API")
    @GetMapping("/getTypeLivePage")
    public R<List<Live>> getTypeLivePage(@RequestParam(defaultValue = "1") Integer page,Integer liveTypeId){
        return liveService.getTypeLivePage(page,liveTypeId);
    }

    @ApiOperation("获取指定直播类型 liveTypeId  必须指定  安卓专用  就是取第一页  前4个")
    @GetMapping("/getTypeLive")
    public R<List<Live>> getTypeLive(Integer liveTypeId){
        return liveService.getTypeLive(liveTypeId);
    }

    @ApiOperation("获取前num名  默认前5名")
    @GetMapping("/getRank")
    public R<List<Live>> getRank(@RequestParam(defaultValue = "5") Integer num){
        return liveService.getRank(num);
    }

    @ApiOperation("获取指定直播的推流信息 方便直播推流")
    @GetMapping("getPushInfo")
    public R<PushInfo> getPushInfo(Integer liveId){
        return liveService.getPushInfo(liveId);
    }

    @ApiOperation("对于B站爬取的直播  若直接获取直播地址 频率太高会封Ip  使用时才获取直播地址")
    @GetMapping("/getLiveUrl")
    public R<String> getLiveUrl(Integer roomId){
        return liveService.getLiveUrl(roomId);
    }

}
